package cn.tedu.em.car.webapi.mapper;

import cn.tedu.em.common.pojo.car.entity.Car;
import cn.tedu.em.common.pojo.car.vo.CarListForUserVO;
import cn.tedu.em.common.pojo.car.vo.CarListVO;
import cn.tedu.em.common.pojo.car.vo.CarStandardVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface CarMapper {

    int insertCar(Car car);

    int deleteById(Long id);

    int deleteByUserId(Long id);

    int updateById(Car car);

    /**
     * 统计车辆数据的数量
     *
     * @return 车辆数据的数量
     */
    int count();

    /**
     * 根据车牌号统计数据的数量
     *
     * @param CarNum 车牌号
     * @return 匹配名称的车辆数据的数量
     */
    int countByCarNum(String CarNum);

    /**
     * 统计非某id但车牌号匹配的车辆数据的数量，用于检查是否存在其它数据使用了相同的车牌号
     *
     * @param id   车辆id
     * @param carNum 车牌号
     * @return 匹配车牌号但不匹配id的数据的数量
     */
    int countByCarNumAndNotId(@Param("id") Long id, @Param("carNum") String carNum);

    /**
     * 统计非某id但车位id匹配的车辆数据的数量，用于检查是否存在其它数据使用了相同的车位id
     *
     * @param id   车辆id
     * @param locationId 车位id
     * @return 匹配车位id但不匹配id的数据的数量
     */
    int countByLocationIdAndNotId(@Param("id") Long id, @Param("locationId") Long locationId);

    CarStandardVO getCarInfoById(Long id);

    List<CarListVO> getCarList();

    List<CarListForUserVO> getCarListByUserId(Long userId);

}
